package com.qixiaobao.servicefee.service;

import com.qixiaobao.servicefee.domain.HandlingFee;
import com.qixiaobao.servicefee.domain.dto.HandlingFeeDTO;
import com.qixiaobao.servicefee.domain.dto.HandlingFeeDetailDTO;
import com.qixiaobao.servicefee.domain.dto.WaitSettlementDTO;
import com.qixiaobao.servicefee.domain.vo.HandlingFeeDetailVO;
import com.qixiaobao.servicefee.domain.vo.HandlingFeeWaitSettlementVO;
import com.qixiaobao.system.domain.Person;
import com.qixiaobao.system.domain.dto.PersonDTO;

import javax.servlet.http.HttpServletResponse;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * @Description 手续费管理  业务层
 * @Author yangxm
 * @Date 2025/6/24 10:11
 */
public interface IServiceFeeService {


    /**
     * @Description 查询待结算列表
     * @Author yangxm
     * @Date 2025/6/24 10:12
     * @param waitSettlementDTO
     * @return java.util.List<com.qixiaobao.servicefee.domain.vo.WaitSettlementVO>
     */
    List<HandlingFeeWaitSettlementVO> selectWaitSettlementList(WaitSettlementDTO waitSettlementDTO);

    /**
     * @Description 查询待结算 保险费总计、手续费总计
     * @Author yangxm
     * @Date 2025/6/24 10:12
     * @param waitSettlementDTO
     * @return java.util.Map<java.lang.String,java.math.BigDecimal>
     */
    Map<String, BigDecimal> selectWaitMoneyTotal(WaitSettlementDTO waitSettlementDTO);

    /**
     * @Description 查询待结算 人员详情列表
     * @Author yangxm
     * @Date 2025/6/24 14:02
     * @param chargeId
     * @return java.util.List<com.qixiaobao.nondirect.invoice.domain.domain.Person>
     */
    List<Person> selectWaitPersonList(Long chargeId);

    /**
     * @Description 待结算 - 结算功能
     * @Author yangxm
     * @Date 2025/6/24 14:02
     * @param handlingFee
     * @return int
     */
    int settleForWait(HandlingFee handlingFee);

    /**
     * @Description 待结算 - 一键结算功能
     * @Author yangxm
     * @Date 2025/6/24 16:06
     * @param waitSettlementDTO
     * @return int
     */
    int settleAllForWait(WaitSettlementDTO waitSettlementDTO);

    /**
     * @Description 待收款、已结算 列表
     * @Author yangxm
     * @Date 2025/6/24 16:06
     * @param handlingFeeDTO
     * @return java.util.List<com.qixiaobao.servicefee.domain.HandlingFee>
     */
    List<HandlingFee> selectHandlingFeeList(HandlingFeeDTO handlingFeeDTO);

    /**
     * @Description 待收款、已结算 详情列表
     * @Author yangxm
     * @Date 2025/6/24 16:06
     * @param handlingFeeDetailDTO
     * @return java.util.List<com.qixiaobao.servicefee.domain.vo.HandlingFeeDetailVO>
     */
    List<HandlingFeeDetailVO> selectHandlingFeeDetailList(HandlingFeeDetailDTO handlingFeeDetailDTO);

    /**
     * @Description 待收款、已结算 导出
     * @Author yangxm
     * @Date 2025/6/24 16:06
     * @param handlingFeeDTO
     * @param response
     * @return void
     */
    void handlingFeeExport(HandlingFeeDTO handlingFeeDTO, HttpServletResponse response);

    /**
     * @Description 待收款、已结算  - 修改备注
     * @Author yangxm
     * @Date 2025/6/25 14:44
     * @param handlingFee
     * @return int
     */
    int updateRemark(HandlingFee handlingFee);

    /**
     * @Description 待收款、已结算  - 详情列表 - 人员列表
     * @Author yangxm
     * @Date 2025/6/25 14:44
     * @param personDTO
     * @return java.util.List<com.qixiaobao.nondirect.invoice.domain.domain.Person>
     */
    List<Person> selectHandlingFeeDetailPersonList(PersonDTO personDTO);

}
